在数字时代,数据就是我们的“命根子”。照片、文档、代码,甚至是服务器上的业务数据,一旦丢失,后果不堪设想。你是不是也曾因为误删文件、硬盘损坏或服务器故障而抓狂?别慌,今天给大家安利两款开源神器——restic 和 rclone(当然还有我们的老朋友MinIO),它们能帮你轻松实现数据的备份与同步,让你的数据安全无忧!
为什么需要备份?3-2-1原则了解一下
在介绍工具之前,先聊聊备份的重要性。数据丢失的风险无处不在:硬件故障、勒索病毒、甚至是手滑误删都可能让你的心血付诸东流。为了保护数据,备份界的“黄金法则”——3-2-1原则必须牢记:
- 3份数据副本:原始数据 + 至少两份备份
- 2种存储介质:比如硬盘 + 云存储
- 1份异地备份:确保至少有一份数据存放在远程位置
有了这个原则,接下来我们就需要趁手的工具来实现
restic:安全高效的增量备份专家
什么是 restic?
restic 是一款用 Go 语言编写的开源备份工具,专为快速、安全、高效的备份而生。它支持 增量备份(只备份变化的部分,节省时间和空间),并且内置 AES-256 加密,确保你的数据在传输和存储过程中都安全无虞
restic 的亮点
- 跨平台:支持 Linux、macOS、Windows,甚至 FreeBSD 等多种操作系统
- 快照机制:每次备份生成一个快照,记录文件结构,随时回溯到特定时间点的状态
- 去重技术:重复数据只存储一次,大幅节省存储空间
- 多样化后端:支持本地存储、对象存储,甚至通过 rclone 挂载的云存储(如 OneDrive、Google Drive)
- 开源免费:代码透明,社区活跃,安全可靠
使用场景
我觉得核心场景应该就是这个
增量加密备份数据、文档到云端或外接硬盘
快速上手 restic
可以参考开源备份软件Restic简单教程
初始化存储库
export RESTIC_REPOSITORY=s3:http://100.90.80.80:9000/backup/txbj
export AWS_ACCESS_KEY_ID=ysicing
export AWS_SECRET_ACCESS_KEY=ioMohliesh8iezoh6joZ7othiu1moo5i
export RESTIC_PASSWORD=OhmeevuF5ainahkeip5eif6Eeph0ahPi
# 初始化
restic init
备份数据:将指定文件夹备份到存储库
# 备份
restic backup /data/gitea --tag gitea
其他backup增强参数或者变量
RESTIC_PACK_SIZE=32
或者--pack-size 32
善用 —pack-size 参数可以有效控制目标文件数量,避免大文件被拆成特别多的小文件,历史文件不会受到影响,只会影响当次增量的备份-exclude=*.tmp
和--iexclude="*.log"
, 缓存、日志都是没必要备份的可以忽略- 与
--limit-upload
相对应的,有一个--limit-download
参数,用于限制下载速度
查看快照:检查备份历史
restic snapshots
恢复数据:从快照恢复文件
restic restore <snapshot_id> --target /path/to/restore
rclone:云存储的“万能钥匙”
这个工具我用的最多是minio同步
什么是 rclone?
rclone 是一个命令行工具,被誉为云存储的“瑞士军刀”。它支持几乎所有主流云存储服务,包括 Google Drive、OneDrive、Dropbox、Amazon S3、阿里云 OSS 等,还能通过 WebDAV、SFTP 等协议连接自定义存储。
rclone 的亮点
- 广泛兼容:支持 50+ 云存储服务,基本覆盖你能想到的所有网盘
- 文件同步:类似 rsync,支持单向同步、双向同步、文件复制等
- 加密支持:提供客户端加密功能,保护数据隐私
- 跨平台:同样支持 Linux、macOS、Windows 等
- 轻量高效:资源占用低,传输速度快。
使用场景
- 个人用户:将本地文件同步到云盘,或在多个云盘间转移数据
- 备份辅助:作为 restic 的后端,将备份数据推送到云端
快速上手 rclone
参考官方文档就行,这里不细说了
安装:从 rclone 官网 下载并安装。
curl https://rclone.org/install.sh | bash
配置远程存储:以MinIO为例
安装引导选择s3/MinIO配置
rclone config
也可以直接编辑~/.config/rclone/rclone.conf
[home]
type = s3
provider = Minio
access_key_id = ysicing
secret_access_key = ioMohliesh8iezoh6joZ7othiu1moo5i
endpoint = http://100.90.80.80:9000
[tx]
type = s3
provider = Minio
access_key_id = ysicing
secret_access_key = ioMohliesh8iezoh6joZ7othiu1moo5i
endpoint = http://100.90.80.81:9000
同步bucket文件
rclone sync tx:/oss/ home:/oss --create-empty-src-dirs --progress
检查文件:列出云端目录
rclone ls home:oss
提示:使用 —dry-run 选项可以模拟操作,避免误删文件
restic + rclone:备份界的“黄金搭档”
单独使用 restic 或 rclone 已经很强大,但将两者结合,简直是备份界的“梦幻组合”!restic 负责增量备份和加密,rclone 提供多样化的云存储后端,二者互补,完美契合 3-2-1 备份原则
为什么组合使用?
- 扩展存储选项:restic 原生支持的存储后端有限,但通过 rclone,可以轻松备份到 OneDrive、Google Drive 等云盘(
如果支持iCloud就好了,白瞎了我的2T) - 安全与效率兼得:restic 的加密和去重结合 rclone 的快速传输,兼顾安全和速度。
- 自动化友好:两者都支持脚本化操作,适合设置定时备份任务。
典型场景
由于我没有环境,这里不做演示了
假设你是想备份数据库数据到OneDrive:
- 用 restic 做增量备份,只保存变化的代码文件,节省空间
- 用 rclone 连接 OneDrive,确保备份数据安全存储在云端
- 写个脚本设置每日自动备份,省心省力
其他
小贴士与注意事项
- 密码管理:restic 的备份密码至关重要,建议使用密码管理器保存
- 带宽管理:rclone/restic都有类似参数限制带宽以避免影响网络
- 定期检查:用 restic check 命令验证备份完整性
- 排除不必要文件:在 restic 中用exclude 等跳过临时文件、缓存等
- 权限管理: MinIO权限要设置好